Linux 文件实时备份 rsync+lsyncd 您所在的位置:网站首页 服务器备份软件 linux Linux 文件实时备份 rsync+lsyncd

Linux 文件实时备份 rsync+lsyncd

2024-07-15 17:06| 来源: 网络整理| 查看: 265

一、原理和说明

lsyncd官网

(一)软件说明

目的是每次只把新修改的同步,而不是全量备份。 Rsync(同步):将一个服务器的一个文件夹的内容提交到另外一个服务器的文件夹 lsyncd(差异检测并调用rsync):把差异的找出来,然后运行脚本

另外,linux桌面端也可以这样使用,如果linux作为工作机,可以实时备份文件

(二)本方法说明

采用的是推送模式,即需要备份文件的服务器(客户端)向备份服务器(服务端)推送 客户端:客户端的文件需要被备份 服务端:接收客户端的文件并保存的

(三)演示说明

以下的演示中,两台设备信息如下 注意,下面的备份目录根据自己情况调整 客户端(文件需要被备份)

局域网ip:192.168.0.188 系统:debian11 备份文件夹:/aaa

服务端(存放备份文件的)

局域网ip:192.168.0.199 系统:debian11 备份文件夹:/cloud/bf_1 (四)其它说明

需要先开放对应端口,默认是873。另外注意selinux,如果搞不定就关了selinx

二、服务端配置(接收备份文件的)

服务端只需要安装rsync

1.安装rsync apt-get install rsync 2.创建接收备份后保存的目录

目录不要直接抄

mkdir /cloud/bf_1 mkdir /cloud/bf_2 3.创建同步的账号密码

使用下面的命令直接写入,也可以vi打开后编辑

echo "rsync_backup:123456" >/etc/rsync.password && chmod 600 /etc/rsync.password

账号为:rsync_backup 密码为:123456

4.配置rsync vi /etc/rsyncd.conf

内容如下

uid = root # linux的用户 gid = root # linux的用户组 use chroot = yes max connections = 1024 timeout = 600 port=873 # 指定rsync端口。默认873 [backup] #备份的项目模块,如果有多个,也是这样设置 path = /cloud/bf_1/ # 备份保存的位置 read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = yes hosts allow = 192.168.0.188 #如果允许所有的IP,则使用* 5.测试并开机启动 systemctl daemon-reload && systemctl start rsync systemctl status rsync

开机启动

systemctl enable rsync 三、客户端配置(文件需要被备份的)

需要安装rsync和sersync

(一)安装配置rsync 1.包安装 apt-get install rsync 2.配置 vi /etc/rsyncd.conf

内容如下

uid = root gid = root use chroot = no max connections = 3600 pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log

保存后退出

3.创建访问服务端的密码(服务端那也设置过一次,这里相同,但是没有前面的账户名了) echo "123456" >/etc/rsync.password && chmod 600 /etc/rsync.password 4.调整系统配置 echo 81920 >/proc/sys/fs/inotify/max_user_watches echo 327678 >/proc/sys/fs/inotify/max_queued_events 5.测试(可以省略,这个是手动的命令)

如果有初始文件,手动运行一下建立初始文件 将/aaa目录下的文件保存到192.168.0.199,用rsync_backup账户登录,存到模块为backup的地方

rsync -avzP /aaa/ [email protected]::backup --password-file=/etc/rsync.password

如果测试成功,说明rsync已经配置好了,可以手动备份了。

6.启动并开机启动或者关掉

注意,如果不是为了双向同步,客户端的这个rsync可以关掉,我这里还是设置开启。 但是不能不安装rsync,因为lsyncd也要调用rsync命令

systemctl daemon-reload && systemctl restart rsync && systemctl enable rsync

如果要关掉

systemctl daemon-reload systemctl stop rsync && systemctl disable rsync (二)安装配置lsyncd

封装了inotify-tools,所以无需再安装

1.安装lsyncd apt-get -y install lsyncd 2.配置文件 mkdir /etc/lsyncd vi /etc/lsyncd/lsyncd.conf

内容如下

settings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd.status", insist = true, statusInterval = 10 } sync { default.rsync, source="/aaa", target="[email protected]::backup", rsync = { binary = "/usr/bin/rsync", archive = true, compress = true, verbose = true, --delete = true, _extra = {"--password-file=/etc/rsync.password"} } }

创建日志文件

mkdir /var/log/lsyncd vi /var/log/lsyncd/lsyncd.log

直接空白保存退出,防止程序没有权限无法新建文件

3.修改启动脚本文件

通过脚本执行状态查询具体位置(可能不同系统不一样,但是这种方法肯定能找到)

systemctl status lsyncd

装好后是这里

vi /etc/init.d/lsyncd

找到并修改这一行为上面配置的文件的地址,修改如下,保存退出 在这里插入图片描述

4.测试启动

刷新systemctl脚本并重新启动

systemctl daemon-reload && systemctl restart lsyncd

注意:只有在该运行之后的改动文件才会自动备份,如果有初始文件,手动同步一次即可

此时正常运行,注意:文件同步会有几秒的延迟,这也是避免不必要的资源浪费

四、其它说明 (一)一个服务端,多个客户端服务器怎么配置

服务端无需多个实例,只需要在配置文件

vi /etc/rsyncd.conf

最后添加形如如下的内容(里面的目录只是演示),保存后重启服务即可

[backup] path = /cloud/edp_bf/ read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = no hosts allow = 192.168.0.188 [doc] path = /var/www read only = no secrets file =/etc/rsync.password auth users = rsync_backup list = no pid file =/var/run/rsyncd.pid lock file =/var/run/rsync.lock log file = /var/log/rsyncd.log ignore errors = no hosts allow = 192.168.0.166 systemctl restart rsync

客户端的配置和上面的一致,这里不再多写一遍了,注意模块名称(就是上面的[ ]中的名称)

(二)客户端或服务端掉线

如果服务端掉线,客户端会不断访问并记录错误日志,注意排查问题

(三)报错

如果报错,在服务端

systemctl status rsync

查看具体的报错内容,这里是详细内容,然后复制错误代码查询即可

1.rsync error: error starting client-server protocol (code 5) at main.c [sender=3.1.2]

服务端需要添加客户端的ip白名单。 在服务端

vi /etc/rsyncd.conf

在“hosts allow =”这里加上客户端ip ,然后重启软件接口

systemctl restart rsync (四)定期清理日志

使用linux系统自带的logrotate日志管理

vi /etc/logrotate.d/lsyncd

写入以下内容

/var/log/lsyncd/lsyncd.log { daily rotate 3 compress delaycompress missingok notifempty create 640 root root postrotate /usr/bin/systemctl restart lsyncd.service endscript }

保存退出即可,这个会自动运行

也可以手动测试有无问题

logrotate -d /etc/logrotate.d/lsyncd


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有